﻿package fwk.form{
	
	public class CheckForm{
		
		private var tabToVerif:Array;
		private var tabReturnError:Array;

		//--- Constructeur
		//----------------------------------------------------------
		function CheckForm(){

		}
		public function init():void
		{
			tabToVerif = new Array();
			tabReturnError = new Array();
		}
		
		//--------------------------------------------------------
		public function add(idString:String, champs:String, typeVerif:String, texteDefault:String = ""):void
		{
			
			var obj:Object = new Object();
			obj.id = idString;
			obj.champs = champs;
			obj.texteDefault = texteDefault;
			obj.type = typeVerif;
			
			tabToVerif.push(obj);
		}
		//--------------------------------------------------------
		//--------------------------------------------------------
		//--------------------------------------------------------
		public function verif():Array
		{
			
			
			for(var i:int=0;i<tabToVerif.length;i++){
				var type:String = tabToVerif[i].type;
				var champs:String = tabToVerif[i].champs;
				var id:String = tabToVerif[i].id;
				var texteDefault:String = tabToVerif[i].texteDefault;
				
				var objError:Object = new Object();
				
				if( type == "email" || type == "texte"){
					if(!verifTexte(champs, texteDefault)){
						objError.id = id;
						objError.type = "texte";
						tabReturnError.push(objError);
					}
				}
				
				
				switch (type) {
					case "email":
						if(!verifMail(champs)){
							objError.id = id;
							objError.type = "email";
							tabReturnError.push(objError);
						}
						break;
				}
				
			}

			return tabReturnError;
		}
		//--------------------------------------------------------
		//----Verifie si le texte n'est pas vide ou contient une chaine vide ou le texte par defaut
		//--------------------------------------------------------
		public function verifTexte(sTexte:String, defaultTexte:String = ""):Boolean{
			if(sTexte != "" && sTexte != " " && sTexte != defaultTexte){
				return true;
			}else{
				return false;
			}
		}
		//--------------------------------------------------------
		//----Verifie si un email est valide
		//--------------------------------------------------------
		public function verifMail(sEmail:String):Boolean{
			var validEmailRegExp:RegExp = /([a-z0-9._-]+)@([a-z0-9.-]+)\.([a-z]{2,4})/;
			return validEmailRegExp.test(sEmail);
		}
		//--------------------------------------------------------
		//----Renvoi true si la date de naissance correspond à un age superieur ou égal à l'age minimum en paramètre
		//--------------------------------------------------------
		public function verifAge(jour:Number,mois:Number,annee:Number, ageMinimun:Number):Boolean{
			trace("verif age : " + jour + "/" + mois + "/" + annee );
			var flag:Boolean = true;
			var actualDate:Date = new Date();
			var ageMin:Number = ageMinimun;
			
			var diffAnnee:Number = actualDate.getFullYear() - annee;
			var diffmois:Number = (actualDate.getMonth() + 1) - mois;
			var diffjour:Number = actualDate.getDate() - jour;
			
			if(diffAnnee == ageMin){
				if(diffmois == 0){
					if(diffjour > 0){
						flag = false;
					}
				}
				if(diffmois > 0){
						flag = false;
				}
			}
			if(diffAnnee < ageMin){
				  flag = false;
			}
			
			trace("age ok ? " + flag);
			return flag;
		}
		//--------------------------------------------------------
		//----Verifie si la liste d'emails contient des emails tous diffrents les uns des autres
		//----------------------------------------------------------
		public function verifMailsDiff(emailsTab:Array):Boolean{
			trace("verif emails différents");
			var flag:Boolean = true;
			var temp:String = "";
			
			for(var i:int=0;i<emailsTab.length;i++){
				temp = emailsTab[i];
				for(var j:int=0;j<emailsTab.length;j++){
					 trace("temp : " + temp + " v : " + emailsTab[j]);
					 if(emailsTab[j] == temp && j != i){
						 flag = false;
						 break;
					 }
				}
			}
			
			return flag;
		}
	}
}